﻿/*
 * Copyright (c) 2019-2029, ZeusOS Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author            Notes
 * 2021-03-23     longmain       first version
 */

#ifndef __ZOS_PWM_H__
#define __ZOS_PWM_H__

#include "zos_def.h"

typedef enum
{
	ZOS_PWM_BUS_1,
	ZOS_PWM_BUS_NONE
} ZOS_PWM_BUS;


/**
 *  \brief PWM 初始化
 *
 *  \param [in] bus		pwm设备
 *  \param [in] pin		pwm输出IO引脚号
 *  \param [in] period	pwm周期(us)
 *  \param [in] pulse	pwm占空比(us)
 * 
 *  \return  ZOS_EOK:初始化成功 , ZOS_ERROR:初始化失败
 */
zos_err_t zos_pwm_init(ZOS_PWM_BUS bus,zos_uint8_t pin,zos_uint32_t period,zos_uint32_t pulse);

/**
 *  \brief PWM 去初始化
 *
 *  \param [in] bus		pwm设备
 * 
 *  \return  ZOS_EOK:初始化成功 , ZOS_ERROR:初始化失败
 */
zos_err_t zos_pwm_deinit(ZOS_PWM_BUS bus);

/**
 *  \brief 使能 PWM 设备
 *
 *  \param [in] bus		pwm设备
 *
 *  \return  ZOS_EOK:使能(开启)成功 , ZOS_ERROR:使能(开启)失败
 */
zos_err_t zos_pwm_enable(ZOS_PWM_BUS bus);

/**
 *  \brief 关闭 PWM 设备
 *
 *  \param [in] bus		pwm设备
 *
 *  \return  0：ZOS_EOK:关闭成功 , ZOS_ERROR:关闭失败
 */
zos_err_t zos_pwm_disable(ZOS_PWM_BUS bus);


/**
 *  \brief PWM 设置脉冲宽度
 *
 *  \param [in] bus		pwm设备
 *  \param [in] pulse	PWM 脉冲宽度时间 (单位微秒 us)
 *
 *  \return  ZOS_EOK:设置成功 , ZOS_ERROR:设置失败
 */
zos_err_t zos_pwm_set(ZOS_PWM_BUS bus,zos_uint32_t pulse);


#endif
